﻿using System.Collections.Generic;
using MJD.Comunes.DtoEntidades;
using MJD.Comunes.Entidades;

namespace MJD.Logica.Traductores
{
    /// <summary>
    /// Clase que traduce la entidad estado en un dtoestado y viceversa
    /// </summary>
    public class TraductorEstado
    {

        /// <summary> Metodo que traduce los datos de la entidad estado en dtoestado para ser serializado para enviarse por el servicio </summary>
        /// <param name="entidad">datos de la entidad a ser traducido</param>
        /// <returns>DtoEstado</returns>
        public static DtoEstado TraducirEntidad(Estado entidad)
        {
            DtoEstado dto = new DtoEstado();
            dto.Id = entidad.Id;
            dto.Nombre = entidad.Nombre;

            return dto;
        }


        /// <summary> Metodo que traduce los datos del dtoEstado en estado para ser manejado por el servidor </summary>
        /// <param name="dto">dato del dto para traducir en entidad</param>
        /// <returns>Estado</returns>
        public static Estado TraducirDto(DtoEstado dto)
        {
            Estado entidad = new Estado();
            entidad.Id = dto.Id;
            entidad.Nombre = dto.Nombre;

            return entidad;
        }


        /// <summary> Metodo que traduce una lista de entidades a una lista de dto's </summary>
        /// <param name="listaEntidad">lista a traducir</param>
        /// <returns>lista traducida</returns>
        public static List<DtoEstado> TraducirListaEntidad(IList<Estado> listaEntidad)
        {
            List<DtoEstado> retorno = new List<DtoEstado>();
            foreach (Estado entidad in listaEntidad)
            {
                retorno.Add(TraducirEntidad(entidad));
            }
            return retorno;
        }


        /// <summary> Metodo que traduce una lista de dto's a una lista de entidades </summary>
        /// <param name="listaDto">lista a traducir</param>
        /// <returns>lista de entidades</returns>
        public static IList<Estado> TraducirListaDto(List<DtoEstado> listaDto)
        {
            IList<Estado> retorno = new List<Estado>();
            foreach (DtoEstado dto in listaDto)
            {
                retorno.Add(TraducirDto(dto));
            }
            return retorno;
        } 
    }
}
